typedstream StreamTable HashTable Object [20c] typedstream [1804c] typedstream HashTable Object HeaderClass %%%%i@@ UnitGen genericobject_nib PaletteView /usr/include/sys/message.h viewnib patchVw image ParamPanel Panel windownib ImageController paletteView instPath sndPath scorePath appDidInit: PatchView /usr/include/stddef.h screenImage connUgen1 paramVal currentUgen connParam1 delegate outUgen currentParam currentImage erase: Reson Instrum Converter FirstResponder firstnib checkSpelling: alignSelCenter: unscript: pasteFont: runPageLayout: superscript: copyRuler: copyFont: selectAll: pasteRuler: toggleRuler: showGuessPanel: alignSelLeft: paste: performClose: arrangeInFront: subscript: copy: alignSelRight: delete: orderFrontColorPanel: underline: performMiniaturize: PatchWindow Window viewRectList Param Oscil Arith Statement CommandScroll ScrollView docView Coordinator stringTable theSubprocess outputWindow scoreData instName pathNames sampRate commandView numChans runIt: writeCode: playIt: rescaleIt: compileInst: writeScore: [12378c] typedstream HashTable Object NibData @@@@s Storage {*@@} [81{*@@}] File's Owner CustomObject Application MainMenu MenuTemplate *@*@ccc Patchmix Matrix Control Responder @:@iiii MenuCell ButtonCell ActionCell Info... Helvetica Unit Generators Score File Information Display Output Paste Select All ff@@#::s submenuAction: Bitmap menuArrow MyWindow WindowTemplate iiii***@s@ PatchWindow FormCell inst1 Instrument Name: Field: Path: CustomView PatchView Reset Write Code Compile Rescale Button Param: Instrument Name Form1 Matrix1 Form2 Param CoordinatorInstance Coordinator FileInfoPanel Panel Sound File: Sound Directory: Score File: Score Directory: /musr/bin Cmix Commands Directory: /musr/cmix Cmix Directory: NXImage NXradio NXradioH Stereo Radio 44100 22050 TextField TextFieldCell Sampling Rate Sound File Header: Helvetica-Bold Paths:o Sound File31 Sound Directory71 Score File;1 Score Directory?1 Cmix Commands DirectoryC1 Cmix DirectoryG1 Field2d+ Fieldi+ Field1l+ Field3q+ NXStringTable OutputWindow Output Window CommandScroll ScoreWindow Score Data [17@] p[0] = Start Time: p[1] = Duration: p[2] = Amplitude: p[3]: p[4]: p[5]: p[6]: p[7]: p[8]: p[9]: p[10]: p[11]: p[12]: p[13]: p[14]: p[15]: p[16]: Write p[0] = Start Time p[1] = Duration p[2] = Amplitude p[10] p[11] p[12] p[13] p[14] p[15] p[16] InfoPanel -An Instrument Builder for Paul Lansky's Cmix by Mara Helmuth mara@woof.music.columbia.edu, mara@silvertone.princeton.edu 709 Dodge Hall, Columbia University, New York, NY 10025 ScrollView ClipView ciifffcfffs [4944c]{\rtf0\ansi{\fonttbl\f0\fnil Times-Roman;\f1\fswiss Helvetica;} \margl40 \margr40 {\colortbl\red0\green0\blue0;} \pard\tx520\tx1060\tx1600\tx2120\tx2660\tx3200\tx3720\tx4260\tx4800\tx5320\f0\b0\i0\ul0\fs24\fc0 \ \b\i What is Patchmix? \b0\i0 \ Patchmix is a graphical interface to the Cmix Programming Language. Within it, \ you can create and test Cmix instruments. Since the code for the instrument is written\ out to a specified directory, you can then work with this code later and modify it as you\ wish. Patchmix can be helpful either to someone learning Cmix or for quickly putting together\ instruments, which can then be modified as necessary. To run it, you need Cmix installed\ in the directory specified in your file information window. \ To get started, first make sure you have correct file info in the File Information panel and for the instrument name and path on the Patchmix window. The default values assume a "NewInst" and "sf" directory or link exists in your home directory for the instrument and sound files. Then, drag unit generators from the palette window onto the white patch view. Double-click on any unwanted unit generators to remove them. To set parameters for their inputs, double click on the parameter knob and set the value in the top right param field. Click again on the parameter to save the value and un-highlight the parameter. Then, connect the unit generators, outputs to inputs, by dragging the mouse from output to input. Redrawing will erase them. When you're done making a patch, write out a score from the Score Data panel, being sure to fill in any designated parameter fields if you used them in the input parameters (i.e., p[3] could be a frequency input to an oscillator). Cmix p-fields default to "0". Then, you're ready to test it out. Hit the "write code", "compile", "run", "rescale" and "play" buttons. To make sure each process has finished before starting the next, watch the "display output" window.\ Send any bugs, suggestions or comments to mara@woof.music.columbia.edu.\ \b\i Main Window \b0\i0 \ The main window is where the flow chart is constructed, and where you select instrument-\ building functions with the compile, play or run buttons. Also, the name of your instrument\ and the directory where you want the code to be written should be specified in the form fields.\ To the right, the "param" field holds values you want to store as inputs to the unit generators.\ \b\i Panel Buttons \b0\i0 \ \b reset \b0 will clear the flow chart off the screen (except for the output unit generator).\ This is an irreversible procedure.\ \b write code \b0 will write out the Cmix code into the "NewInst" directory, under filenames\ "inst1.c", "Makefile" and "profile.c". If you already have these files in this directory\ they will be overwritten. If you specify different file names and path in the main window, they will be used. \ \b compile \b0 will compile the new instrument program.\ \b run \b0 creates the sound file by running the Cmix program.\ \b rescale \b0 will rescale the sound file from a floating point to an integer sound file.\ \b play \b0 will play the sound file.\ \b compile \b0 will compile the instrument that has been written out.\ \b run \b0 will run the cmix job using the instrument specified in the main window, and the\ score file and sound file specified in the file information window.\ \b rescale \b0 will rescale the soundfile into a playable integer file.\ \b play \b0 will play the soundfile.\ Warning: Loops in the patch will not work. The output of a unit generator can only be\ connected to one other unit generator.\ \b\i Cmix Unit Generators\ \b0\i0 The unit generator panel contains in the first row an oscilator, buzz, random number\ generator, evp (simple envelope with attack and decay) and a reson filter. The\ second and fourth rows are not yet working. The third row contains addition, subtraction\ multiplication and division operators. The six items in the right-most column are pitch\ converters. "pch" means octave.pitch class representation, "oct" means octave.decimal,\ and "cps" means Hertz or cycles per second. So, "pchcps" converts from Hz to octave.\ pitch class notation. The Cmix man pages explain more about these unit generators.\ The input values to each parameter or argument of the unit generator may be set internally\ by Patchmix, or more often can be set by the user in the "Param" field at the top of the main\ window. If the value is something that should be determined by the data or score file\ and not specified in the instrument, enter a new p-field number in the Param field when this\ input is selected. For example, in a one-oscil instrument, perhaps frequency should be a \ p-field. Go to the Score Data window, choose an unused p-field (i.e. p[3]), and enter\ it into the frequency param. NXCursor NXibeam Scroller _doScroller: @@@ffs Times-Bold$ Release 1.2 August, 1992 Patchmix 1.2 Field4 ScrollingText1 UgenWindow PaletteView ImageControllerInstance ImageController {i*@@@} [36{i*@@@}] hide: terminate: copy: paste: selectAll: makeKeyAndOrderFront: pathNames(1 instName( instPath( stringTable( commandView( outputWindow( sampRate(\ numChans(O delegate paletteView playIt: rescaleIt: ( runIt: compileInst: patchVw erase: writeCode: paramVal scoreData( writeScore: scorePath sndPath